/*
 * 创建日期 2010-1-2
 *
 * 成都天和软件公司
 * 电话：028-85425861
 * 传真：028-85425861-8008
 * 邮编：610041 
 * 版权所有
 */

package  org.fantasy.common.grid.bean;

import  org.fantasy.common.grid.custom.CellCustom;
import  org.fantasy.common.grid.custom.RowCustom;

import java.util.List;
import java.util.Set;

/**
 *  参数接口
 * @author: 王文成
 * @version: 1.0
 * @since 2010-1-2
 */

public interface Param {

    /**
     * 初始化参数
     * @throws Exception
     */
    void prepare() throws Exception;
    
    /**
     * 整体标识
     * @return
     */
    String getId();
    
    /**
     * 控件的JS引用名称
     * @return
     */
    String getVar();
    
    /**
     * 自定义单元格实例
     * @return
     */
    CellCustom getCellCustom();
    
    /**
     * 自定义行实例
     * @return
     */
    RowCustom getRowCustom();
    
    /**
     * 隐藏的表头
     * @return
     */
    Set<String> getHideHeads();
    
    /**
     * 对应查询结果数据的表头(最底层取得数据)
     * @return
     */
    List<Column> getTableFields();
    
    /**
     * 取得配置的表头(生成复杂表头格式)
     * @return
     */
    List<List<Column>> getTableHeads();
    
    /**
     * 取得自定义行的实现类
     * @return
     */
    String getRowCustomClass();
    
    /**
     * 取得自定义单元格的实现类
     * @return
     */
    String getCellCustomClass();
    
    /**
     * 取得样式
     * @return
     */
    String getStyle();
    
    /**
     * 取得行高
     * @return
     */
    String getRowHeight();
    
    /**
     * 取得表头配置名称
     * @return
     */
    String getTableConfig();
    
    /**
     * 取得工具栏
     * @return
     */
    Toolbar getToolbar();
    
    /**
     * 取得导出文件名称
     * @return
     */
    String getExportName();
    
    /**
     * 取得分页Action
     * @return
     */
    String getAction();

    /**
     * 是否分页
     * @return
     */
    boolean isPage();
    
    /**
     * 取得数据
     * @return
     */
    List getDataList();
    
    /**
     * 计算总数Action
     * @return
     */
    String getCountAction();
    
    /**
     * 是否是隐藏列
     * @param col
     * @return
     */
    boolean isHideCol(Column col);
    
    /**
     * 取得身份标识
     * @return
     */
    String getIdentity();
    
    /**
     * 是否锁定表头
     * @return
     */
    boolean isLockHead();
    
    /**
     * 取得表格选择模式
     * @return
     */
    String  getSelectMode();
}